Cloud computing is a model for enabling ubiquitous, convenient, on-demand network access to a shared pool of configurable computing resources or a cloud infrastructure (e.g., networks, servers, storage, applications, and services) that can be rapidly provisioned and released with minimal management effort or service provider interaction. Software as a Service (SaaS) is a software distribution model in which applications are hosted by a vendor or service provider and made available to customers over the Internet. SaaS is the capability provided to a consumer to use the provider's applications running on a cloud infrastructure. The applications are accessible from various client devices through either a thin client interface, such as a web browser (e.g., web-based email), or a program interface. Typically, the consumer does not manage or control the underlying cloud infrastructure including network, servers, operating systems, storage, or even individual application capabilities.
Platform as a Service (PaaS) (an outgrowth of SaaS) is a paradigm for delivering operating systems and associated services over the Internet without downloads or installation. PaaS is sometimes called “cloudware” because PaaS moves resources from privately owned computers into the cloud. PaaS is the capability to deploy onto the cloud infrastructure, consumer-created or acquired applications created using programming languages, libraries, services, and tools supported by the provider. The consumer does not manage or control the underlying cloud infrastructure including network, servers, operating systems, or storage, but has control over the deployed applications and possibly configuration settings for the application-hosting environment. Generally, with PaaS, operating system features can be changed and upgraded frequently.
With PaaS, distributed development teams can work together on software development projects. Services can be obtained from diverse sources that cross international boundaries. Initial and ongoing costs can be reduced by the use of infrastructure services from a single vendor rather than maintaining multiple hardware facilities that often perform duplicate functions or suffer from incompatibility problems.
SaaS and PaaS introduce a digital marketplace in which numerous software application stores make applications available over the cloud infrastructure. PaaS frees software producers from the need of maintaining a complex infrastructure and offers the software producers ready-to-use, sophisticated, elastic information technology (IT) stack on which applications can be built to target specific markets and application domains. Application stores represent a privileged channel through which an increasing number of ISVs (Independent Software Vendors) reach their customers, targeting specific application domains.
This model (including the cloud, SaaS and PaaS) represents a growth opportunity, but comes with unique challenges. For example, customers may trust the service provider because of previous business relationships or the service provider's reputation. However, as the size of the marketplace grows (e.g., as an open software ecosystem), the likelihood that customers come across an ISV whom they have never encountered before increases. Therefore, (as the marketplace grows) distrust in applications provided by various, and possibly unknown ISVs, is likely to increase. In other words, customers who trust the service provider may encounter difficulties in entrusting their data and their business applications to a small software vendor selling an application running, for example, on a cloud infrastructure.
Software testing is a mechanism for ensuring software quality. Test coverage criteria are used to quantify the thoroughness of the tests conducted and give a quantitative basis for building confidence in the quality of a software program. However, software testing requires a substantial investment which is not always attainable, especially in small organizations. In particular, attaining 100% coverage (or substantially 100% coverage), may be difficult and expensive. As a result, many software products are published to the marketplace before a test coverage indicating an acceptable quality is achieved. For example, real-time executions may trigger certain paths in the program that were not tested by a test case. In addition, the information about real-time executions is lost.
Arguably, the trust gap between potential customers and ISVs may be caused by a lack of transparency regarding quality of the software application. Therefore, there is a need for ensuring the quality of software and there is a need for making quality indicators visible to customers in order to reduce the trust gap and foster the adoption of the application marketplace paradigm.